home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # This is 'probe', a wrapper for using fdisk to gather drive info for
- # the Slackware setup scripts. I hate to bounce this much garbage through
- # a tmpdir, but it looks like large variables can make ash crash...
-
- # Many thanks to Vincent Rivellino for contributing the patches to support
- # Mylex and Compaq RAID controllers.
-
- TMP=/var/log/setup/tmp
- rm -f $TMP/SeTfdisk
-
- # listide major minor hd1 hd2 (2 base devs for major)
- list_ide() {
- if [ "$2" = "0" ]; then
- fdisk -l /dev/$3 >> $TMP/SeTfdisk
- elif [ "$2" = "64" ]; then
- fdisk -l /dev/$4 >> $TMP/SeTfdisk
- fi
- }
-
- list_scsi() {
- # find drive # 0 - 15
- DRV=`expr $1 / 16`
- NUM=`expr $1 % 16`
- if [ ! "$NUM" = "0" ]; then
- return
- fi
- if [ "$DRV" = "0" ]; then
- fdisk -l /dev/sda >> $TMP/SeTfdisk
- elif [ "$DRV" = "1" ]; then
- fdisk -l /dev/sdb >> $TMP/SeTfdisk
- elif [ "$DRV" = "2" ]; then
- fdisk -l /dev/sdc >> $TMP/SeTfdisk
- elif [ "$DRV" = "3" ]; then
- fdisk -l /dev/sdd >> $TMP/SeTfdisk
- elif [ "$DRV" = "4" ]; then
- fdisk -l /dev/sde >> $TMP/SeTfdisk
- elif [ "$DRV" = "5" ]; then
- fdisk -l /dev/sdf >> $TMP/SeTfdisk
- elif [ "$DRV" = "6" ]; then
- fdisk -l /dev/sdg >> $TMP/SeTfdisk
- elif [ "$DRV" = "7" ]; then
- fdisk -l /dev/sdh >> $TMP/SeTfdisk
- elif [ "$DRV" = "8" ]; then
- fdisk -l /dev/sdi >> $TMP/SeTfdisk
- elif [ "$DRV" = "9" ]; then
- fdisk -l /dev/sdj >> $TMP/SeTfdisk
- elif [ "$DRV" = "10" ]; then
- fdisk -l /dev/sdk >> $TMP/SeTfdisk
- elif [ "$DRV" = "11" ]; then
- fdisk -l /dev/sdl >> $TMP/SeTfdisk
- elif [ "$DRV" = "12" ]; then
- fdisk -l /dev/sdm >> $TMP/SeTfdisk
- elif [ "$DRV" = "13" ]; then
- fdisk -l /dev/sdn >> $TMP/SeTfdisk
- elif [ "$DRV" = "14" ]; then
- fdisk -l /dev/sdo >> $TMP/SeTfdisk
- elif [ "$DRV" = "15" ]; then
- fdisk -l /dev/sdp >> $TMP/SeTfdisk
- fi
- }
-
- # List Mylex RAID device
- list_rd() {
- # find drive
- DRV=`expr $2 / 8`
- NUM=`expr $2 % 8`
- if [ ! "$NUM" = "0" ]; then
- return
- fi
- fdisk -l /dev/rd/c$1d$DRV >> $TMP/SeTfdisk
- }
-
- # List Cpq SMART/2 RAID device
- list_ida() {
- # find drive
- DRV=`expr $2 / 16`
- NUM=`expr $2 % 16`
- if [ ! "$NUM" = "0" ]; then
- return
- fi
- fdisk -l /dev/ida/c$1d$DRV >> $TMP/SeTfdisk
- }
-
- list_cciss() {
- # find drive
- DRV=`expr $2 / 16`
- NUM=`expr $2 % 16`
- if [ ! "$NUM" = "0" ]; then
- return
- fi
- fdisk -l /dev/cciss/c$1d$DRV >> $TMP/SeTfdisk
- }
-
- list_ataraid() {
- # find drive
- DRV=`expr $2 / 16`
- NUM=`expr $2 % 16`
- if [ "$NUM" = "0" ]; then
- fdisk -l /dev/ataraid/d$DRV >> $TMP/SeTfdisk
- else
- return
- fi
- }
-
- list_amiraid() {
- # find drive
- DRV=`expr $2 / 16`
- NUM=`expr $2 % 16`
- if [ "$NUM" = "0" ]; then
- fdisk -l /dev/amiraid/ar$DRV >> $TMP/SeTfdisk
- else
- return
- fi
- }
-
- list_md() {
- echo "/dev/$2 1 2 $1 kk Linux" >> $TMP/SeTfdisk
- }
-
- if cat /proc/partitions | grep / 1> /dev/null 2> /dev/null ; then # new
- cat /proc/partitions | grep / | while read line ; do
- SMASHED_LINE=$line
- MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
- MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
- if [ "$MAJOR" = "3" ]; then
- list_ide $MAJOR $MINOR hda hdb
- elif [ "$MAJOR" = "8" ]; then
- list_scsi $MINOR
- elif [ "$MAJOR" = "9" ]; then
- list_md `echo $SMASHED_LINE | cut -f 3 -d ' ' | tr -d '/'` \
- `echo $SMASHED_LINE | cut -f 4 -d ' '`
- elif [ "$MAJOR" = "22" ]; then
- list_ide $MAJOR $MINOR hdc hdd
- elif [ "$MAJOR" = "33" ]; then
- list_ide $MAJOR $MINOR hde hdf
- elif [ "$MAJOR" = "34" ]; then
- list_ide $MAJOR $MINOR hdg hdh
- elif [ "$MAJOR" = "48" ]; then
- list_rd 0 $MINOR
- elif [ "$MAJOR" = "49" ]; then
- list_rd 1 $MINOR
- elif [ "$MAJOR" = "50" ]; then
- list_rd 2 $MINOR
- elif [ "$MAJOR" = "51" ]; then
- list_rd 3 $MINOR
- elif [ "$MAJOR" = "52" ]; then
- list_rd 4 $MINOR
- elif [ "$MAJOR" = "53" ]; then
- list_rd 5 $MINOR
- elif [ "$MAJOR" = "54" ]; then
- list_rd 6 $MINOR
- elif [ "$MAJOR" = "55" ]; then
- list_rd 7 $MINOR
- elif [ "$MAJOR" = "56" ]; then
- list_ide $MAJOR $MINOR hdi hdj
- elif [ "$MAJOR" = "57" ]; then
- list_ide $MAJOR $MINOR hdk hdl
- elif [ "$MAJOR" = "72" ]; then
- list_ida 0 $MINOR
- elif [ "$MAJOR" = "73" ]; then
- list_ida 1 $MINOR
- elif [ "$MAJOR" = "74" ]; then
- list_ida 2 $MINOR
- elif [ "$MAJOR" = "75" ]; then
- list_ida 3 $MINOR
- elif [ "$MAJOR" = "76" ]; then
- list_ida 4 $MINOR
- elif [ "$MAJOR" = "77" ]; then
- list_ida 5 $MINOR
- elif [ "$MAJOR" = "78" ]; then
- list_ida 6 $MINOR
- elif [ "$MAJOR" = "79" ]; then
- list_ida 7 $MINOR
- elif [ "$MAJOR" = "80" ]; then
- list_ide $MAJOR $MINOR hdm hdn
- elif [ "$MAJOR" = "89" ]; then
- list_ide $MAJOR $MINOR hdo hdp
- elif [ "$MAJOR" = "90" ]; then
- list_ide $MAJOR $MINOR hdq hdr
- elif [ "$MAJOR" = "91" ]; then
- list_ide $MAJOR $MINOR hds hdt
- elif [ "$MAJOR" = "101" ]; then
- list_amiraid $MAJOR $MINOR
- elif [ "$MAJOR" = "104" \
- -o "$MAJOR" = "105" \
- -o "$MAJOR" = "106" \
- -o "$MAJOR" = "107" \
- -o "$MAJOR" = "108" \
- -o "$MAJOR" = "109" \
- -o "$MAJOR" = "110" \
- -o "$MAJOR" = "111" ]; then
- list_cciss $(( $MAJOR - 104 )) $MINOR
- elif [ "$MAJOR" = "114" ]; then
- list_ataraid $MAJOR $MINOR
- fi
- done
- else # old format and no RAID:
- if cat /proc/partitions | grep md 1> /dev/null 2> /dev/null ; then
- cat /proc/partitions | grep md | while read line ; do
- SMASHED_LINE=$line
- MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
- if [ "$MAJOR" = "9" ]; then
- list_md `echo $SMASHED_LINE | cut -f 3 -d ' ' | tr -d '/'` \
- `echo $SMASHED_LINE | cut -f 4 -d ' '`
- fi
- done
- fi
- fdisk -l >> $TMP/SeTfdisk
- fi
-
- cat $TMP/SeTfdisk
-